package team.se.tms.service;

import team.se.tms.dto.Page;
import team.se.tms.dto.RoleDetail;
import team.se.tms.po.RoleInfo;

import java.util.List;

/**
 * 角色信息业务层接口,定义了角色信息业务层调用的方法
 *
 * @author winkyle
 * @date 2018/11/18
 */
public interface RoleInfoService {
    /**
     * 根据用户id获取角色信息
     *
     * @param userId 用户id
     * @return 角色信息
     * @throws Exception 异常
     * @create on 2018/11/17 by winkyle
     */
    RoleInfo getRoleInfo(String userId) throws Exception;

    /**
     * 根据用户id获取角色信息，该角色拥有的权限为该角色的属性
     *
     * @param userId 用户id
     * @return  角色信息
     * @throws Exception 异常
     * @create on 2018/11/17 by winkyle
     */
    RoleDetail getRoleDetail(String userId) throws Exception;

    /**
     * 添加角色
     *
     * @param roleDetail 角色信息
     * @return Boolean 添加结果
     * @throws Exception 异常
     * @create on 2018/12/20 by johnny
     */
    Boolean saveRole(RoleDetail roleDetail) throws Exception;
    /**
     * 分页查询角色
     *
     * @param page 分页
     * @return List<RoleDetail> 角色信息集合
     * @throws Exception 异常
     * @create on 2018/12/21 by johnny
     */
    List<RoleDetail> listAllRoleDetails(Page page) throws Exception;
    /**
     * 删除角色
     *
     * @param roleId 角色id
     * @return Boolean 删除结果
     * @throws Exception 异常
     * @create on 2018/12/21 by johnny
     */
    Boolean removeRole(String roleId) throws Exception;
    /**
     * 更新角色
     *
     * @param roleDetail 修改后的角色信息
     * @return Boolean 更行结果
     * @throws Exception 异常
     * @create on 2018/12/21 by johnny
     */
    Boolean modifyRole(RoleDetail roleDetail) throws Exception;

    /**
     * 查询所有角色
     * @create on 2018/12/27 by argentum
     *
     * @return 全部角色信息
     * @throws Exception
     */
    List<RoleInfo> listAllRoleInfos() throws Exception;
}
